package process

import (
	"encoding/json"
	"errors"
	"fmt"
	"go_chat_system/common"
	"go_chat_system/server/utils"
)

type SmsProcess struct {
}

func showGroupMessage(smsProcess *SmsProcess) {
	var content string
	fmt.Println("------------------------ 群聊页面 ------------------------")
	fmt.Printf("请输入聊天内容:")
	fmt.Scanln(&content)
	smsProcess.SenGroupMessage(content)
}

// 发送群聊消息
func (this *SmsProcess) SenGroupMessage(content string) (err error) {
	// 1.创建一个SmsMessage
	smsMes := common.SmsMessage{
		Content: content,
	}
	smsMes.UserId = currentUser.UserId
	smsMes.UserName = currentUser.UserName
	// 2.序列化SmsMessage
	data, err := json.Marshal(smsMes)
	if err != nil {
		err = errors.New("SenGroupMessage Marshal SmsMessage Error")
		return
	}
	// 3.创建一个Message
	mes := common.Message{
		Type: common.SmsMessageType,
		Data: string(data),
	}
	// 4.序列化Message
	data, err = json.Marshal(mes)
	if err != nil {
		err = errors.New("SenGroupMessage Marshal Message Error")
		return
	}
	// 5.发送
	err = (&utils.Transfer{
		Conn: currentUser.Conn,
	}).WriteData(data)
	if err != nil {
		err = errors.New("SenGroupMessage Write Message Error")
		return
	}

	return
}

// 打印群聊消息
func outputGroupMessage(data string) (err error) {
	// 1.反序列化
	var smsMes common.SmsMessage
	err = json.Unmarshal([]byte(data), &smsMes)
	if err != nil {
		err = errors.New("outputGroupMessage Unmarshal SmsMessage Error")
		return
	}
	// 2.输入内容
	content := fmt.Sprintf("==> [%s]:%s", smsMes.UserName, smsMes.Content)
	fmt.Println(content)
	fmt.Println()
	return
}
